This specification relates to creating, publishing, subscribing to, and using virtual machines.
A virtual machine is software construct that appears to be hardware on which a guest operating system and applications can be installed. In an emulator implementation, the virtual machine is an emulator, simulating all of the hardware used by the guest operating system and applications. In para-virtualization, the virtual machine allows the guest operating system and applications to run on the host hardware, but requires that the guest operating system be modified to use a special API (application programming interface) to run on the virtual machine monitor. In machine-level or full virtualization, the virtual machine allows a guest operating system that is implemented for the underlying host processor to be run without modification.
In a para-virtualization or a machine-level virtualization implementation, a virtual machine monitor is used to bind the virtual machine to the underlying host hardware. In some architectures, the virtual machine monitor runs directly on the host hardware, in a hypervisor configuration. In others, it runs as an application on the host operating system.
In some architectures, a lightweight hypervisor is run between the host operating system and the host hardware that provides a calling interface for both the host operating system and the virtual machine monitors.
In some architectures, a hypervisor uses the services of a host operating system for device and other support.